package com.cysyz.mylib.sms;

import java.util.List;

import com.cysyz.mylib.sms.exception.SMSException;

/**
 * 用于发送短信的工具
 */
public interface SMSSender {
	
	/**
	 * 给一个人发送一个条短信
	 * @Title: sendOneMsgToOnePerson
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:08:19
	 * @param phoneNum 手机号码
	 * @param content 短信内容
	 * @return 当前发送短信批次的唯一标识
	 * @throws SMSException 如果发送失败
	 */
	public String sendOneMsgToOnePerson(String phoneNum, String content) throws SMSException;
	
	/**
	 * 给多个人发送同一条短信
	 * @Title: sendOneMsgToSomePerson
	 * @Author: 崔勇
	 * @Date 2014-4-15 下午2:07:34
	 * @param phoneNumsCsv csv格式的手机号码字符串
	 * @param content 短信内容
	 * @return 当前发送短信批次的唯一标识
	 * @throws SMSException 如果发送失败
	 */
	public String sendOneMsgToSomePerson(String phoneNumsCsv, String content) throws SMSException;
	
	/**
	 * 给多个人发送同一条短信
	 * @Title: sendOneMsgToSomePerson
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:10:48
	 * @param phoneNums 手机号码的集合
	 * @param content 短信内容
	 * @return 当前发送短信批次的唯一标识
	 * @throws SMSException 如果发送失败
	 */
	public String sendOneMsgToSomePerson(List<String> phoneNums, String content) throws SMSException;
	
	/**
	 * 给多个人定时发送同一条短信
	 * @Title: sendOneMsgToSomePersonTiming
	 * @Author: 崔勇
	 * @Date 2014-4-15 下午4:59:55
	 * @param phoneNums 手机号码集合
	 * @param content 短信内容
	 * @param time 定时时间
	 * @return  当前发送短信批次的唯一标识
	 * @throws SMSException 如果发送失败
	 */
	public String sendOneMsgToSomePersonTiming(List<String> phoneNums, String content, String time) throws SMSException;
	
	/**
	 * 给多个人定时发送同一条短信
	 * @Title: sendOneMsgToSomePersonTiming
	 * @Author: 崔勇
	 * @Date 2014-4-15 下午4:59:55
	 * @param phoneNumsCsv csv格式的手机号码字符串
	 * @param content 短信内容
	 * @param time 定时时间
	 * @return  当前发送短信批次的唯一标识
	 * @throws SMSException 如果发送失败
	 */
	public String sendOneMsgToSomePersonTiming(String phoneNumsCsv, String content, String stime) throws SMSException;
	
	/**
	 * 给多人发送短信，每个人发送的内容都不相同
	 * contents中的第一个短信内容发送到phoneNums集合中的第一个人
	 * @Title: sendSomeMsgToSomePerson
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:11:37
	 * @param phoneNums 手机号码的集合  
	 * @param contents 短信内容的集合
	 * @return 
	 * @throws SMSException 
	 */
	public String sendSomeMsgToSomePerson(List<String> phoneNums, List<String> contents) throws SMSException;

	/**
	 * 给多人发送短信，每个人发送的内容都不相同
	 * contents中的第一个短信内容发送到phoneNums集合中的第一个人
	 * @Title: sendSomeMsgToSomePerson
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:11:37
	 * @param phoneNums 手机号码的集合  
	 * @param contents 短信内容的集合
	 * @return 
	 * @throws SMSException 
	 */
	public String sendSomeMsgToSomePerson(List<String> phoneNums, List<String> contents, String stime) throws SMSException;
	
	/**
	 * 充值
	 * @Title: chargeFee
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:13:39
	 * @param cardno 卡号
	 * @param cardpwd 密码
	 * @throws SMSException 如果充值失败
	 */
	public void chargeFee(String cardno, String cardpwd) throws SMSException;
	
	/**
	 * 查询余额
	 * @Title: getBalance
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:17:06
	 * @return 余额 
	 */
	public String getBalance();
	
	/**
	 * 使用未激活的序列号进行注册
	 * @Title: register
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:17:32
	 * @param smsRegisterConfig 
	 * @throws SMSException 如果注册失败
	 */
	public void register(SMSRegisterConfig smsRegisterConfig) throws SMSException;
	
	/**
	 * 注销，使序列号变为未激活状态
	 * @Title: unRegister
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:18:06
	 * @throws SMSException 如果注销失败
	 */
	public void unRegister() throws SMSException;
	
	/**
	 * 更改序列号绑定的注册信息
	 * @Title: changeRegisterInfo
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:19:42
	 * @param smsRegisterConfig
	 * @throws SMSException 如果修改失败
	 */
	public void changeRegisterInfo(SMSRegisterConfig smsRegisterConfig) throws SMSException;
	
	/**
	 * 更改密码
	 * @Title: changePwd
	 * @Author: 崔勇
	 * @Date 2014-4-11 下午3:20:49
	 * @param newPwd 新的密码
	 * @throws SMSException 如果更改失败
	 */
	public void changePwd(String newPwd) throws SMSException;
}
